<?php
defined('EXEC') or die();
$transacao = 'grupo';
$modulo = Session::get('cd_modulo');

if(!$auth->isRead($transacao)){
	Util::info(Config::AUTH_MESSAGE);
	return true;
}

//Importando a class javascript datatable
Controller::addHead('jquery.datatables.min');

//Importando a classes
Loader::import('com.atitudeweb.SQL');
Loader::import('br.gov.ce.seduc.NivelAcesso');

//Exclusão de vários ou um registro
if(isset($_POST['checkdel'])){
	if($auth->isDelete($transacao)){
		if(SQL::remove('tethys.tb_grupo', 'ci_grupo', $_POST['checkdel'])){
			Util::notice('Grupo', 'Excluído com sucesso!');
		}
		else{
			Util::notice('Grupo', 'Houve um erro ao excluir o grupo!', 'error');
		}
	}
	else{
		Util::info(Config::AUTH_MESSAGE);
	}
}

//Alteração ou inclusão de um registro
if(isset($_GET['db']) && isset($_GET['form'])){

	$ci_grupo = $_GET['form'];
	$nm_grupo = addslashes($_POST['nm_grupo']);
	$fl_nivel_acesso = $_POST['fl_nivel_acesso'];
	$transacao = @$_POST['transacao'];
	$ci_usuario = $user['ci_usuario'];

	if($_GET['form'] == 0){ //cadastro
		$ciRow = query("SELECT nextval('tethys.tb_grupo_ci_grupo_seq') as ci_grupo")->fetch();
		$ci_grupo = $ciRow['ci_grupo'];
		$sql = "INSERT INTO tethys.tb_grupo(ci_grupo, nm_grupo, cd_modulo, fl_nivel_acesso)
		VALUES ($ci_grupo, '$nm_grupo', $modulo, $fl_nivel_acesso); ";	

		if($transacao){
			for($i=0;$i<count($transacao);$i++){
				$ci_transacao = $transacao[$i];
				$fl_inserir = (@$_POST['insert_'.$ci_transacao] ? "S" : "N");
				$fl_alterar = (@$_POST['update_'.$ci_transacao] ? "S" : "N");
				$fl_deletar = (@$_POST['delete_'.$ci_transacao] ? "S" : "N");
				$sql .= "INSERT INTO tethys.tb_grupotransacoes(cd_grupo, cd_transacao, fl_inserir, fl_alterar, fl_deletar, cd_usuario_insert)
				VALUES ($ci_grupo, $ci_transacao, '$fl_inserir', '$fl_alterar', '$fl_deletar', $ci_usuario); ";			
			}
		}
	}
	elseif($_GET['form'] > 0){ //alteração
		$sql = "UPDATE tethys.tb_grupo
				SET nm_grupo='$nm_grupo', fl_nivel_acesso=$fl_nivel_acesso
		WHERE ci_grupo = $ci_grupo; 
		DELETE FROM tethys.tb_grupotransacoes
		WHERE cd_grupo = $ci_grupo; ";

		if($transacao){
			for($i=0;$i<count($transacao);$i++){
				$ci_transacao = $transacao[$i];
				$fl_inserir = (@$_POST['insert_'.$ci_transacao] ? "S" : "N");
				$fl_alterar = (@$_POST['update_'.$ci_transacao] ? "S" : "N");
				$fl_deletar = (@$_POST['delete_'.$ci_transacao] ? "S" : "N");
				$sql .= "INSERT INTO tethys.tb_grupotransacoes(cd_grupo, cd_transacao, fl_inserir, fl_alterar, fl_deletar, cd_usuario_insert)
				VALUES ($ci_grupo, $ci_transacao, '$fl_inserir', '$fl_alterar', '$fl_deletar', $ci_usuario); ";			
			}
		}
	}

	if(execute($sql)){
		Controller::setInfo('Grupo', 'Salvo com sucesso!');
		Controller::redirect(Util::setLink(array('form=null', 'db=null')));
	}
	else{
		Util::notice('Grupo', 'Ocorreu um erro!', 'error');
	}
}

if(isset($_GET['form'])){ //Formulário para adição ou alteração de registro
	if($_GET['form'] == 0){
		if(!$auth->isCreate($transacao)){
			Util::info(Config::AUTH_MESSAGE);
			return true;
		}

		//Selecionando todas as transacões possíveis do módulo
		$sqlPossiveis = "select tt.ci_transacao, tt.nm_transacao
		from tethys.tb_transacao tt
		inner join tethys.tb_modulotransacao tmt on(tt.ci_transacao=tmt.cd_transacao)
		where tmt.cd_modulo = $modulo
		order by tt.nm_transacao";
		$queryPossiveis = query($sqlPossiveis);
	}
	else{
		if(!$auth->isUpdate($transacao)){
			Util::info(Config::AUTH_MESSAGE);
			return true;
		}

		//Selecionando todas as transacões possíveis do módulo exceto as já selecionadas
		$sqlPossiveis = "select tt.ci_transacao, tt.nm_transacao
		from tethys.tb_transacao tt
		inner join tethys.tb_modulotransacao tmt on(tt.ci_transacao=tmt.cd_transacao)
		where tmt.cd_modulo = $modulo
		  and tt.ci_transacao not in(select cd_transacao from tethys.tb_grupotransacoes where cd_grupo = ".$_GET['form'].")
		order by tt.nm_transacao";
		$queryPossiveis = query($sqlPossiveis);

		//Selecionando as transações já selecionadas
		$sqlSelecionadas = 'select tt.ci_transacao, tt.nm_transacao, tgt.fl_inserir, tgt.fl_alterar, tgt.fl_deletar
		from tethys.tb_grupotransacoes tgt
		inner join tethys.tb_transacao tt on(tgt.cd_transacao=tt.ci_transacao)
		where tgt.cd_grupo = '.$_GET['form'].'
		order by tt.nm_transacao asc';
		$querySelecionadas = query($sqlSelecionadas);

		$rowEdit = query('select * from tethys.tb_grupo where ci_grupo = '.$_GET['form'])->fetch();
	}
}
else{ //Consulta no banco para listagem dos registros

	$where = 'cd_modulo = '.$modulo.' and fl_nivel_acesso != 6 ';
	if(@$_POST['search1']){
		$term = addslashes($_POST['search1']);
		$where .=  "and nm_grupo ilike '%{$term}%' ";
	}
	if(@$_POST['search2']){
		$term = addslashes($_POST['search2']);
		$where .=  "and fl_nivel_acesso = {$term} ";
	}

	$sql = "select * from tethys.tb_grupo
	where $where
	order by nm_grupo asc
	limit {$limitPagina} offset ".(($p - 1) * $limitPagina);
	$query = query($sql);
	$sqlNum = "select count(*) as num from tethys.tb_grupo where $where";
	$rowNum = query($sqlNum)->fetch();
	$registros = $rowNum['num'];
	$paginacao = Util::pagination($registros, 2);
}

//Seleciona o nome do módulo
$queryModulo = query('select ds_modulo from tethys.tb_modulo where ci_modulo = '.$modulo)->fetch();
$ds_modulo = $queryModulo['ds_modulo'];
?>

<h3>
	<i class="fa fa-users"></i> Grupos -
	<?php echo (!isset($_GET['form']) ? 'Pesquisa' : (@$_GET['form'] > 0 ? 'Edição' : 'Cadastro')); ?>
</h3>
	<?php if(!isset($_GET['form'])){ ?>
<a href="<?php echo Util::setLink(array('&form=0')); ?>"
	class="command-page"><span class="fa fa-plus-square"></span> Novo</a>
	<?php } else{ ?>
<a href="#" class="command-page"
	onclick="window.location='?page=acesso/grupo';"><span
	class="fa fa-reply"></span> Voltar</a>
	<?php } ?>


<div class="panel panel-default">
	<div class="panel-body">
	<?php echo Util::$alert; ?>
	<?php if(!isset($_GET['form'])){ ?>
		<form action="<?php echo Util::setLink(array('p=null')); ?>"
			method="post" class="form">
			<div class="row">
				<div class="col-md-5">
					<div class="form-group">
						<label class="control-label">Grupo:</label> <input type="text"
							name="search1" id="search1" size="40"
							value="<?php echo @$_POST['search1']; ?>"
							class="form-control  col-xs-3" />
					</div>
				</div>
				<div class="col-md-5">
					<div class="form-group">
						<label class="control-label">Nível de Acesso:</label> <select
							id="serarch2" name="search2" class="form-control">
							<option value="0">...</option>
							<?php
							foreach(NivelAcesso::$niveis as $key=>$value){
								if(@$_POST['search2'] == $key)
								echo "<option value=\"$key\" selected=\"selected\">$key - $value</option>";
								else
								echo "<option value=\"$key\">$key - $value</option>";
							}
							?>
						</select>

					</div>
				</div>
				<div class="col-md-2">
					<button id="btSearch" class="btn btn-success btn-adjust">
						<span class="fa fa-search"></span> Consultar
					</button>
				</div>
			</div>
		</form>
		<?php } ?>

		<?php if(!isset($_GET['form'])){ ?>

		<!-- LISTAGEM DOS REGISTROS -->
		<form method="post" id="formSearch">
			<table
				class="table table-striped table-bordered table-hover form-horizontal">
				<thead>
					<tr class="ui-widget-header">
						<th width="25" class="check"><input type="checkbox"
							id="btCheckAll" /></th>
						<th>Grupo</th>
						<th>Nível de Acesso</th>
						<th></th>
					</tr>
				</thead>
				<tbody>
				<?php
				while($row = $query->fetch()){
					echo '<tr>
		            	<td class="check"><input type="checkbox" class="btCheck" name="checkdel[]" value="'.$row['ci_grupo'].'"/></td>
		                <td>'.$row['nm_grupo'].'</td>
		                <td>'.$row['fl_nivel_acesso'].' - '.@NivelAcesso::$niveis[$row['fl_nivel_acesso']].'</td>
		                <td width="30" align="center">
		                	<div onclick="window.location=\''.Util::setLink(array('form='.$row['ci_grupo'], 'del=null')).'\';" class="btEdit ui-widget ui-helper-clearfix" title="Editar">
						    	<div class="ui-state-default ui-corner-all"><span class="ui-icon ui-icon-pencil"></span></div>
						    </div>				    
		                </td>
		        	</tr>';				
				}
				?>
				</tbody>
			</table>
		</form>
		<button id="btDel" class="btn btn-success "
			title="Excluir selecionados" style="float: left;">
			<span class="fa fa-trash"></span> Excluir
		</button>
		<?php echo $paginacao; ?>


		<?php } else{ ?>

		<!-- FORMULÁRIO DE CADASTRO -->
		<form action="<?php echo Util::setLink(array('db=1')) ?>"
			method="post" class="form" id="formInsertEdit"
			onsubmit="return test();">
			<div class="row">
				<div class="col-md-6">
					<div class="form-group">
						<label for="exampleInputEmail1">Grupo<span class="text-danger">*</span>
						</label> <input type="text" id="nm_grupo" name="nm_grupo"
							size="65" value="<?php echo trim(@$rowEdit['nm_grupo']); ?>"
							maxlength="50" style="text-transform: uppercase;"
							class="form-control" />
					</div>
				</div>
				<div class="col-md-6">
					<div class="form-group">
						<label for="exampleInputEmail1">Nível de Acesso:<span
							class="text-danger">*</span> </label> <select
							id="fl_nivel_acesso" name="fl_nivel_acesso" class="form-control">
							<option value="0">...</option>
							<?php
							foreach(NivelAcesso::$niveis as $key=>$value){
								if(@$rowEdit['fl_nivel_acesso'] == $key)
								echo "<option value=\"$key\" selected=\"selected\">$key - $value</option>";
								else
								echo "<option value=\"$key\">$key - $value</option>";
							}
							?>
						</select>
					</div>
				</div>
			</div>
			<fieldset class="ui-corner-all">
				<legend>Transações</legend>

				<div class="col-md-6">
					<div class="panel panel-default">
						<div class="panel-heading">Possíveis</div>
						<div class="panel-body">
							<ul class="list-group" id="box_possiveis">
							<?php
							while($row = $queryPossiveis->fetch()){
								echo '
								<li role="presentation" data-idtrans="'.$row['ci_transacao'].'" class="list-group-item">
									<a href="javascript:void(0)" class="remove-trans hidden"><span class="fa fa-arrow-circle-left fa-lg"></span></a> '.$row['nm_transacao'].' 
									<a href="javascript:void(0)" class="add-trans pull-right"><span class="fa fa-arrow-circle-right fa-lg"></span></a>
									<span class="pull-right hidden check"><input type="checkbox" title="Adicionar" data-toggle="tooltip"/> <input type="checkbox" title="Editar" data-toggle="tooltip"/> <input type="checkbox" title="Excluir" data-toggle="tooltip"/></span>
								</li>';
							}
							?>
							</ul>
						</div>
					</div>
				</div>

				<div class="col-md-6">
					<div class="panel panel-default">
						<div class="panel-heading">Pertencentes ao grupo</div>
						<div class="panel-body">
							<ul class="list-group" id="box_selecionadas">
								<li class="list-group-item active">Transações <span
									class="pull-right"> <span class="fa fa-plus"></span> <span
										class="fa fa-edit"></span> <span class="fa fa-trash"></span> </span>
								</li>
								<?php
								if(@$querySelecionadas){
									while($row = $querySelecionadas->fetch()){
										echo '<li data-idtransacao="'.$row['ci_transacao'].'">'.$row['nm_transacao'].'
											<input type="hidden" name="transacao[]" value="'.$row['ci_transacao'].'" />
											<input type="checkbox" name="insert_'.$row['ci_transacao'].'" value="1" '.($row['fl_inserir'] == 'S' ? 'checked="checked"' : '').'/>
											<input type="checkbox" name="update_'.$row['ci_transacao'].'" value="1" '.($row['fl_alterar'] == 'S' ? 'checked="checked"' : '').'/>
											<input type="checkbox" name="delete_'.$row['ci_transacao'].'" value="1" '.($row['fl_deletar'] == 'S' ? 'checked="checked"' : '').'/>
										</li>';
									}
								}
								?>
							</ul>
						</div>
					</div>
				</div>

			</fieldset>
			<br clear="all">
			<div id="boxRowsHidden" style="display: none;"></div>
			<div align="center">
				<button class="btn btn-success" id="btInsertEdit" type="submit">
					<span class="fa fa-save"></span> Salvar
				</button>
			</div>
		</form>
		<?php } ?>
	</div>
</div>


<div id="dialog_del" title="<?php echo Config::SYSTEM; ?>">
	<p>Tem certeza que deseja excluir os registros selecionados?</p>
</div>
<script type="text/javascript">
var $possiveis = $('#box_possiveis');
var $selecionadas = $('#box_selecionadas');

$possiveis.find('li').find('.add-trans').click(addTrans);
$selecionadas.find('li').find('.remove-trans').click(removeTrans);

function addTrans(elem){
	var trans = $(this).parent();
	$selecionadas.append(trans);
	trans.find('.remove-trans').removeClass('hidden');
	trans.find('.add-trans').addClass('hidden');
	trans.find('.check').removeClass('hidden');
	trans.find('.remove-trans').click(removeTrans);
}

function removeTrans(elem){
	var trans = $(this).parent();
	$possiveis.append(trans);
	trans.find('.add-trans').removeClass('hidden');
	trans.find('.remove-trans').addClass('hidden');
	trans.find('.check').addClass('hidden');
}


/*var objConfigTable = { 	"bLengthChange": false,
						"oLanguage": {
							"sInfo": "Mostrando _START_ até _END_<br> _TOTAL_ registros",
							"sInfoFiltered": " - filtrando de _MAX_ registros",
							"sSearch": "Procurar:",
							"oPaginate": {
								"sNext": "Próximo",
								"sPrevious": "Anterior"
							},
							"sZeroRecords": "NENHUM REGISTRO ENCONTRADO...",
							"sInfoEmpty": ""
						}
					};	*/

/*function test(){	
	var valid = true;
	$("#formInsertEdit").find("input,select").each(function(index){
		$(this).removeClass("ui-state-error");						
	});	
	valid = checkLength('nm_grupo', 'Grupo', 2) && valid;
	if($('#fl_nivel_acesso').val() == 0){
		$('#fl_nivel_acesso').addClass("ui-state-error").focus();
		valid = false;	
		updateTips('Selecione corretamente um Nível de Acesso.');
	}	
	
	var inputs = $(table_selecionadas.fnGetHiddenTrNodes()).find('input');
	$("#boxRowsHidden").append(inputs);
	return valid;	
}
function dragRowTable(tableID, addExtraClass){	
	$("#" + tableID + " tbody tr").not(".ui-draggable").each(function(){
		if($(this).children().hasClass("dataTables_empty"))
			return;
						
		$(this).addClass(addExtraClass);								
		$(this).draggable({
			helper: function(){
				var index = $("#" + tableID).dataTable().fnGetPosition(this);
				var temp = $(this).clone();
				temp.find("td:gt(0)").remove();
				return $("<table class='tabledrag' rowindex='" + index + "'></table>").append(temp);
			},
			appendTo: "body",
			revert: "invalid",
			opacity: 0.9
		});
	});
}
$(function() {	
	objConfigTable['fnDrawCallback'] = function(oSettings){ dragRowTable('table_possiveis', 'transacao_add'); };
	table_possiveis = $('#table_possiveis').dataTable(objConfigTable);	
	objConfigTable['aoColumnDefs'] = [ {"bSortable":false, "aTargets":[1, 2, 3] } ];		
	objConfigTable['fnDrawCallback'] = function(oSettings){ dragRowTable('table_selecionadas', 'transacao_added'); };
	table_selecionadas = $('#table_selecionadas').dataTable(objConfigTable);			
	$("#box_selecionadas").droppable({
		activeClass: "drag_1",
		hoverClass: "drag_2",
		accept: ".transacao_add",
		drop: function(event, ui){		
			var index = ui.helper.attr("rowindex");
			var idtransacao = ui.draggable.attr("idtransacao");
			var a = table_selecionadas.fnAddData([ui.draggable.text().trim(),"<td><input type='hidden' name='transacao[]' value='" + idtransacao + "' /><input type='checkbox' name='insert_" + idtransacao + "' value='1' /></td>","<td><input type='checkbox' name='update_" + idtransacao + "' value='1' /></td>","<td><input type='checkbox' name='delete_" + idtransacao + "' value='1' /></td>"]);
			table_possiveis.fnDeleteRow(index);			
			var nTr = table_selecionadas.fnSettings().aoData[ a[0] ].nTr;
			$(nTr).attr("idtransacao", idtransacao);
		}
	});
	$("#box_possiveis").droppable({
		activeClass: "drag_1",
		hoverClass: "drag_2",
		accept: ".transacao_added",
		drop: function(event, ui){				
			var index = ui.helper.attr("rowindex");
			var idtransacao = ui.draggable.attr("idtransacao");			
			var a = table_possiveis.fnAddData([ui.draggable.text().trim()]);	
			table_selecionadas.fnDeleteRow(index);				
			var nTr = table_possiveis.fnSettings().aoData[ a[0] ].nTr;
			$(nTr).attr("idtransacao", idtransacao);
		}
	});	
});*/
</script>
